package com.lazycat.leetcode.editor.cn;
//2023-06-06 14:17:13
//给你一个下标从 0 开始、大小为 n x n 的整数矩阵 grid ，返回满足 Ri 行和 Cj 列相等的行列对 (Ri, Cj) 的数目。 
//
// 如果行和列以相同的顺序包含相同的元素（即相等的数组），则认为二者是相等的。 
//
// 
//
// 示例 1： 
//
// 
//
// 
//输入：grid = [[3,2,1],[1,7,6],[2,7,7]]
//输出：1
//解释：存在一对相等行列对：
//- (第 2 行，第 1 列)：[2,7,7]
// 
//
// 示例 2： 
//
// 
//
// 
//输入：grid = [[3,1,2,2],[1,4,4,5],[2,4,2,2],[2,4,2,2]]
//输出：3
//解释：存在三对相等行列对：
//- (第 0 行，第 0 列)：[3,1,2,2]
//- (第 2 行, 第 2 列)：[2,4,2,2]
//- (第 3 行, 第 2 列)：[2,4,2,2]
// 
//
// 
//
// 提示： 
//
// 
// n == grid.length == grid[i].length 
// 1 <= n <= 200 
// 1 <= grid[i][j] <= 10⁵ 
// 
//
// Related Topics 数组 哈希表 矩阵 模拟 👍 54 👎 0

import java.util.ArrayList;
import java.util.List;

class EqualRowAndColumnPairs {
    public static void main(String[] args) {
        //创建该题目的对象方便调用
        Solution solution = new EqualRowAndColumnPairs().new Solution();
        solution.equalPairs(new int[][]{{3,2,1},{1,7,6},{2,7,7}});
    }
    //leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public int equalPairs(int[][] grid) {

        int n = grid.length;
        ArrayList<int[]> rows = new ArrayList<>();
        for(int i = 0;i<n;i++){
            int[] arr = new int[n];
            for(int j = 0;j<n;j++){
                arr[j] = grid[i][j];
            }
            rows.add(arr);
        }

        ArrayList<int[]> laws = new ArrayList<>();
        for(int i = 0;i<n;i++) {
            int[] arr = new int[n];
            for (int j = 0;j<n;j++){
                arr[j] = grid[j][i];
            }
            laws.add(arr);
        }
        int ans = 0;
        for(int i = 0;i<n;i++){
            for(int j = 0;j<n;j++){
                if(isEquals(rows.get(i), laws.get(j))){
                    ans++;
                }
            }
        }
        return ans;
    }

    private boolean isEquals(int[] list1,int[] list2){
        int n = list1.length;

        for(int i = 0;i<n;i++){
            if(list1[i] != list2[i]){
                return false;
            }
        }
        return true;
    }
}
//leetcode submit region end(Prohibit modification and deletion)

}